package Entidades;
// Generated 12/11/2013 01:08:05 by Hibernate Tools 3.2.1.GA

import Persistencia.FachadaPersistencia;
import Persistencia.Hibernate;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;

/**
 * SdSensorEquipo generated by hbm2java
 */
public class Equipo implements java.io.Serializable {

    private Integer idEquipo;
    private Tipoequipo sdSensorTipoequipo;
    private Estadoequipo sdSensorEstadoequipo;
    private Empresa sdSensorEmpresa;
    private String nombre;
    private String codigoEquipo;
    private Date fechaInstalacion;
    private Date tiempoSinEnviarDatos;
    private Date tiempoEntreAlerta;
    private String ubicacion;
    private Set sdSensorSubscripcionperiodicas = new HashSet(0);
    private Set sdSensorSensors = new HashSet(0);
    private Set sdSensorHistoricoestadoequipos = new HashSet(0);
    private Set sdSensorSubscripcionfuncionamientos = new HashSet(0);

    public Equipo() {
    }

    public Equipo(String nombre) {
        this.nombre = nombre;
    }

    public Equipo(Tipoequipo sdSensorTipoequipo, Estadoequipo sdSensorEstadoequipo, Empresa sdSensorEmpresa, String nombre, String codigoEquipo, Date fechaInstalacion, Date tiempoSinEnviarDatos, Date tiempoEntreAlerta, String ubicacion, Set sdSensorSubscripcionperiodicas, Set sdSensorSensors, Set sdSensorHistoricoestadoequipos, Set sdSensorSubscripcionfuncionamientos) {
        this.sdSensorTipoequipo = sdSensorTipoequipo;
        this.sdSensorEstadoequipo = sdSensorEstadoequipo;
        this.sdSensorEmpresa = sdSensorEmpresa;
        this.nombre = nombre;
        this.codigoEquipo = codigoEquipo;
        this.fechaInstalacion = fechaInstalacion;
        this.tiempoSinEnviarDatos = tiempoSinEnviarDatos;
        this.tiempoEntreAlerta = tiempoEntreAlerta;
        this.ubicacion = ubicacion;
        this.sdSensorSubscripcionperiodicas = sdSensorSubscripcionperiodicas;
        this.sdSensorSensors = sdSensorSensors;
        this.sdSensorHistoricoestadoequipos = sdSensorHistoricoestadoequipos;
        this.sdSensorSubscripcionfuncionamientos = sdSensorSubscripcionfuncionamientos;
    }

    public Integer getIdEquipo() {
        return this.idEquipo;
    }

    public void setIdEquipo(Integer idEquipo) {
        this.idEquipo = idEquipo;
    }

    public Tipoequipo getSdSensorTipoequipo() {
        return this.sdSensorTipoequipo;
    }

    public void setSdSensorTipoequipo(Tipoequipo sdSensorTipoequipo) {
        this.sdSensorTipoequipo = sdSensorTipoequipo;
    }

    public Estadoequipo getSdSensorEstadoequipo() {
        return this.sdSensorEstadoequipo;
    }

    public void setSdSensorEstadoequipo(Estadoequipo sdSensorEstadoequipo) {
        this.sdSensorEstadoequipo = sdSensorEstadoequipo;
    }

    public Empresa getSdSensorEmpresa() {
        return this.sdSensorEmpresa;
    }

    public void setSdSensorEmpresa(Empresa sdSensorEmpresa) {
        this.sdSensorEmpresa = sdSensorEmpresa;
    }

    public String getNombre() {
        return this.nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getCodigoEquipo() {
        return this.codigoEquipo;
    }

    public void setCodigoEquipo(String codigoEquipo) {
        this.codigoEquipo = codigoEquipo;
    }

    public Date getFechaInstalacion() {
        return this.fechaInstalacion;
    }

    public void setFechaInstalacion(Date fechaInstalacion) {
        this.fechaInstalacion = fechaInstalacion;
    }

    public Date getTiempoSinEnviarDatos() {
        return this.tiempoSinEnviarDatos;
    }

    public void setTiempoSinEnviarDatos(Date tiempoSinEnviarDatos) {
        this.tiempoSinEnviarDatos = tiempoSinEnviarDatos;
    }

    public String getUbicacion() {
        return this.ubicacion;
    }

    public void setUbicacion(String ubicacion) {
        this.ubicacion = ubicacion;
    }

    public Set getSdSensorSubscripcionperiodicas() {
        return this.sdSensorSubscripcionperiodicas;
    }

    public void setSdSensorSubscripcionperiodicas(Set sdSensorSubscripcionperiodicas) {
        this.sdSensorSubscripcionperiodicas = sdSensorSubscripcionperiodicas;
    }

    public Set getSdSensorSensors() {
        return this.sdSensorSensors;
    }

    public void setSdSensorSensors(Set sdSensorSensors) {
        this.sdSensorSensors = sdSensorSensors;
    }

    public Set getSdSensorHistoricoestadoequipos() {
        return this.sdSensorHistoricoestadoequipos;
    }

    public void setSdSensorHistoricoestadoequipos(Set sdSensorHistoricoestadoequipos) {
        this.sdSensorHistoricoestadoequipos = sdSensorHistoricoestadoequipos;
    }

    public Set getSdSensorSubscripcionfuncionamientos() {
        return this.sdSensorSubscripcionfuncionamientos;
    }

    public void setSdSensorSubscripcionfuncionamientos(Set sdSensorSubscripcionfuncionamientos) {
        this.sdSensorSubscripcionfuncionamientos = sdSensorSubscripcionfuncionamientos;
    }

    public ArrayList<Sensor> getSensores() {
        Session session = Hibernate.getSessionFactory().openSession();
        session.beginTransaction();
        Query consulta = session.createQuery("FROM Sensor WHERE idEquipo ='" + idEquipo + "' and idEstadoSensor <> '3'");
        ArrayList sensores = (ArrayList) consulta.list();
        ArrayList<Sensor> obj = new ArrayList();
        for (int i = 0; i < sensores.size(); i++) {
            Sensor s = (Sensor) sensores.get(i);
            obj.add(s);
        }
        session.getTransaction().commit();
        session.close();
        return obj;
    }

    public Date getTiempoEntreAlerta() {
        return tiempoEntreAlerta;
    }

    public void setTiempoEntreAlerta(Date tiempoEntreAlerta) {
        this.tiempoEntreAlerta = tiempoEntreAlerta;
    }

    public Medicion getUltimaMedicion() {
        Medicion medicion;
        Session session = Hibernate.getSessionFactory().openSession();
        session.beginTransaction();
        Object med = session.createSQLQuery("Select MAX(idMedicion) from sd_sensor_medicion as M inner join sd_sensor_sensor as S where M.idSensor = S.idSensor and S.idEquipo ='" + idEquipo + "'").uniqueResult();
        if (med != null) {
            int id = (int) med;
            try {
                Class cls = Class.forName("Entidades.Medicion");
                medicion = (Medicion) session.get(cls, id);
                session.getTransaction().commit();
                session.close();
                return medicion;
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(FachadaPersistencia.class.getName()).log(Level.SEVERE, null, ex);
                return null;
            }
        } else {
            return null;
        }
    }
}
